// 定义汉字数字和单位
const cnNums = ["零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"];
const cnIntRadice = ["", "拾", "佰", "仟"];
const cnIntUnits = ["", "万", "亿", "兆"];
const cnDecUnits = ["角", "分", "厘", "毫"];

// 定义一个函数，将数字转换为大写
function convertCurrency(num) {
  // 检查输入是否合法
  if (isNaN(num)) {
    return "请输入有效的数字";
  }
  // 将数字转换为字符串，并去掉小数点后多余的零
  num = num.toString().replace(/(0+)$/, "");
  // 获取整数部分和小数部分
  let [integer, decimal] = num.split(".");
  // 初始化输出结果
  let output = "";
  // 处理整数部分
  if (integer !== "0") {
    // 获取整数部分的长度
    let intLen = integer.length;
    // 遍历每一位数字
    for (let i = 0; i < intLen; i++) {
      // 获取当前位的数字
      let n = integer[i];
      // 获取当前位的单位
      let unit = cnIntRadice[(intLen - i - 1) % 4];
      // 获取当前位的扩展单位
      let extUnit = cnIntUnits[Math.floor((intLen - i - 1) / 4)];
      // 判断是否需要补零
      let zero = "";
      // 如果当前位是零，并且后面还有非零位
      if (n === "0" && i < intLen - 1 && integer[i + 1] !== "0") {
        // 补零
        zero = "零";
      }
      // 如果当前位是非零，或者是最后一位零
      if (n !== "0" || (n === "0" && i === intLen - 1)) {
        // 拼接数字和单位
        output += cnNums[n] + unit;
      }
      // 如果当前位是万、亿、兆的倍数
      if ((intLen - i - 1) % 4 === 0) {
        // 拼接扩展单位
        output += extUnit;
      }
      // 拼接补零
      output += zero;
    }
    // 拼接'元'字
    output += "元";
  }
  // 处理小数部分
  if (decimal) {
    // 获取小数部分的长度
    let decLen = decimal.length;
    // 遍历每一位数字
    for (let j = 0; j < decLen; j++) {
      // 获取当前位的数字
      let m = decimal[j];
      // 获取当前位的单位
      let unit = cnDecUnits[j];
      // 如果当前位是非零
      if (m !== "0") {
        // 拼接数字和单位
        output += cnNums[m] + unit;
      }
    }
  }
  // 如果没有小数部分，或者小数部分全是零
  if (!decimal || decimal === "0") {
    // 拼接'整'字
    output += "整";
  }
  // 返回输出结果
  return output;
}

window.exports = {
  rmb_reverse: {
    // 注意：键对应的是 plugin.json 中的 features.code
    mode: "list", // 列表模式
    args: {
      // 进入插件应用时调用（可选）
      enter: (action, callbackSetList) => {
        // 如果进入插件应用就要显示列表数据
        callbackSetList([
          {
            title: "请输入小写人民币",
            description: "这是描述",
            icon: "./logo.png", // 图标(可选)
          },
        ]);
      },
      // 子输入框内容变化时被调用 可选 (未设置则无搜索)
      search: (action, searchWord, callbackSetList) => {
        // 获取一些数据
        // 执行 callbackSetList 显示出来
        callbackSetList([
          {
            title: convertCurrency(searchWord),
            description: "回车复制",
            icon: "./logo.png", // 图标
          },
        ]);
      },
      // 用户选择列表中某个条目时被调用
      select: (action, itemData, callbackSetList) => {
        window.utools.hideMainWindow();
        utools.copyText(itemData.title);
        // require("electron").shell.openExternal(url);
        window.utools.outPlugin();
      },
      // 子输入框为空时的占位符，默认为字符串"搜索"
      placeholder: "输入小写人民币",
    },
  },
};
